package br.com.os2.pacemark.gui;

import br.com.os2.pacemark.dao.PacienteDAO;
import br.com.os2.pacemark.dao.ProdutoDAO;
import br.com.os2.pacemark.dao.ProdutoUsadoDAO;
import br.com.os2.pacemark.model.Produto;
import br.com.os2.pacemark.model.ProdutoUsado;
import br.com.os2.pacemark.util.DateUtil;
import br.com.os2.pacemark.util.Mensagem;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;

/**
 *
 * @author Daniel
 *
 */
public class ProdutoUsadoView extends javax.swing.JDialog {

    /**
     * Variável produtoUsado utilizada para inserir ou editar convênios
     */
    private ProdutoUsado produtoUsado;

    /**
     * Variável usada para operações relacionadas oa banco de dados
     *
     */
    private ProdutoUsadoDAO produtoUsadoDAO;

    /**
     * Variável que referecia ao objeto/janela pai do JDialog atual
     *
     */
    private Implantes telaPai;

    /**
     * Construtor de ProdutoUsado
     *
     * @param telaPai Janela pai do JDialog atual
     *
     * @param modal boolean que indica se a tela é ou não modal
     *
     * @param produtoUsado ProdutoUsado para incluir ou editar
     *
     * @param operacao String que indica se a operação a ser realizada é uma
     * inclusão ou edição
     *
     *
     */
    public ProdutoUsadoView(Implantes telaPai, boolean modal,
            ProdutoUsado produtoUsado) {

        super(telaPai, true);

        initComponents();

        this.telaPai = telaPai;

        this.produtoUsado = produtoUsado;

        produtoUsadoDAO = new ProdutoUsadoDAO();

        //Inicializando combobox
        DefaultComboBoxModel modelProdutos = new DefaultComboBoxModel(new ProdutoDAO().listar().toArray());

        cmbProdutos.setModel(modelProdutos);

        txtDataImplante.setText(DateUtil.format(produtoUsado.getImplante().getData()));

    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        txtDataImplante = new javax.swing.JTextField();
        cmbProdutos = new javax.swing.JComboBox();
        jLabel2 = new javax.swing.JLabel();
        btnGravar1 = new javax.swing.JButton();
        btnCancelar = new javax.swing.JButton();
        jLabel3 = new javax.swing.JLabel();
        txtQuantidade = new javax.swing.JTextField();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

        jLabel1.setText("Data do Implante");

        txtDataImplante.setEnabled(false);

        jLabel2.setText("Produto*");

        btnGravar1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/gravar.png"))); // NOI18N
        btnGravar1.setText("Gravar");
        btnGravar1.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGravar1ActionPerformed(evt);
            }
        });

        btnCancelar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/imagens/cancelar.png"))); // NOI18N
        btnCancelar.setText("Cancelar");
        btnCancelar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCancelarActionPerformed(evt);
            }
        });

        jLabel3.setText("Quantidade*");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGap(10, 10, 10)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addGap(0, 0, Short.MAX_VALUE))
                    .addGroup(layout.createSequentialGroup()
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(txtDataImplante, javax.swing.GroupLayout.Alignment.LEADING)
                            .addGroup(javax.swing.GroupLayout.Alignment.LEADING, layout.createSequentialGroup()
                                .addComponent(jLabel3)
                                .addGap(0, 33, Short.MAX_VALUE))
                            .addComponent(txtQuantidade, javax.swing.GroupLayout.Alignment.LEADING))
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                            .addComponent(jLabel2)
                            .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                                .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                                    .addComponent(btnGravar1, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE)
                                    .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                                    .addComponent(btnCancelar, javax.swing.GroupLayout.PREFERRED_SIZE, 95, javax.swing.GroupLayout.PREFERRED_SIZE))
                                .addComponent(cmbProdutos, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 279, javax.swing.GroupLayout.PREFERRED_SIZE)))))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jLabel1)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(txtDataImplante, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel2)
                    .addComponent(jLabel3))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(cmbProdutos, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(txtQuantidade, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnCancelar)
                    .addComponent(btnGravar1))
                .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        setSize(new java.awt.Dimension(416, 194));
        setLocationRelativeTo(null);
    }// </editor-fold>//GEN-END:initComponents

    private void btnGravar1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGravar1ActionPerformed

        if (txtQuantidade.getText().isEmpty()) {

            Mensagem.novaMensagem("Campos vazios",
                    "Campos marcados com * são obrigatórios",
                    JOptionPane.WARNING_MESSAGE);

        } else {

            produtoUsado.setProduto((Produto) cmbProdutos.getSelectedItem());

            try {

                produtoUsado.setQuantidade(Integer.parseInt(txtQuantidade.getText()));

            } catch (Exception e) {

                Mensagem.novaMensagem("Ooops!", "Quantidade informada está inválida", JOptionPane.ERROR_MESSAGE);

            }
            
            produtoUsadoDAO.inserir(produtoUsado);
            
            //ATUALIZANDO A QUANTIDADE DE PRODUTOS
            
            Produto produto = produtoUsado.getProduto();
            
            produto.setQuantidade(produto.getQuantidade() - produtoUsado.getQuantidade());
            
            new ProdutoDAO().atualizar(produto);

            telaPai.listarProdutos();

            dispose();

        }

    }//GEN-LAST:event_btnGravar1ActionPerformed

    private void btnCancelarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCancelarActionPerformed

        dispose();

    }//GEN-LAST:event_btnCancelarActionPerformed

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnCancelar;
    private javax.swing.JButton btnGravar1;
    private javax.swing.JComboBox cmbProdutos;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel2;
    private javax.swing.JLabel jLabel3;
    private javax.swing.JTextField txtDataImplante;
    private javax.swing.JTextField txtQuantidade;
    // End of variables declaration//GEN-END:variables
}
